package com.vhall.component.service.tag;

import com.vhall.component.entity.inav.vo.TagVO;
import com.vhall.component.entity.tag.TagEntity;
import com.vhall.component.entity.tag.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @author guoxin.wang
 * @date 2021/7/5 10:35
 */
public interface TagService {

    /**
     * 保存
     *
     * @param reqVO 参数
     * @return 返回值
     */
    TagEntity save(TagCreateVO reqVO);

    /**
     * 列表
     *
     * @param reqVO 参数
     * @return 返回值
     */
    TagPage<TagEntityVO> list(TagListVO reqVO);

    /**
     * 更新tag
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Integer update(TagUpdateVO reqVO);

    /**
     * 删除
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Integer delete(TagDeleteVO reqVO);

    /**
     * 获取信息
     *
     * @param reqVO 参数
     * @return 返回值
     */
    List<TagEntity> getInfo(TagInfoVO reqVO);

    /**
     * 获取信息
     *
     * @param tagIds 参数
     * @return 返回值
     */
    List<TagVO> listByIds(String tagIds);

    /**
     * 排序
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Boolean rank(TagOrderVO reqVO);

    /**
     * 获取信息
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Map<Integer, String> tagsInfo(TagInfoVO reqVO);

    /**
     * 增加使用次数
     *
     * @param param 参数
     * @return 返回值
     */
    Boolean count(TagCountVO param);

    /**
     * 禁用/启用标签
     * @param vo
     * @return
     */
    Boolean enableTag(EnableTagRequestVO vo);
}
